0%

Binary Images | [01] Overview


본 게시글은
First Principles of Computer Vision의 강의를 참고하여 작성하였습니다.
유튜브 주소

Binary Image

Binary image란 이진값(0 또는 255)만 가지는 이미지로써
이미지 처리나 분석에 용이하게 해준다.
이미지

Binary Image는 Gray-Level Image를 사용하여 진행한다.
기본적인 이미지에는 Red, Green, Blue 3개의 색을 사용하여 구성 되며,
이에따라 3개의 채널로 구성이 되어있다.
해당 이미지를 Gray Scale을 진행해주면 1개의 채널만 구성되며,
각 픽셀은 0부터 255까지의 밝기값을 가지게 된다.

여기서 각 픽셀의 Gray Value를 임계값(Threshold)와 비교하여 이진화를 진행한다.

소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import cv2
import numpy as np
from copy import copy

def GrayScale(IMG):
height, width, c = IMG.shape
image_data = np.asarray(IMG)
print(height,width,c)
for i in range(height):
for j in range(width):
image_data[i][j] = image_data[i][j][1]
Gray_Image = image_data[0:height,0:width,0:1] # 채널을 1개로 바꿔줌
return Gray_Image # 반환

def Threshold(IMG,threshold,value): # GV(Gray Value,밝기값)이 임계값(Threshold)보다 큰 경우, Value 값으로 할당
height,width,c = IMG.shape
print(c)
for i in range(height):
for j in range (width):
if(IMG[i][j] > threshold):
IMG[i][j] = value
else:
IMG[i][j] = 0
return IMG

img = cv2.imread("/Users/lim/download.jpeg",1)
cv2.imshow('Original',img)
Grayimg = GrayScale(copy(img))
cv2.imshow('Gray',Grayimg)
Thresimg = Threshold(Grayimg,127,255)
cv2.imshow('threshold',Thresimg)
cv2.waitKey(0)
cv2.destroyAllWindows()


실제 Opencv에서 제공하는 함수와 비교했을때, 약간의 차이가 있지만, 정상적으로 동작하는 것을 알 수 있다.
이미지

Topics

(1) Geometric Properties
(2) Segmenting Binary Images
(3) Iterative Modification

참고 영상

Overview | Binary Images